home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ask
/
ksd
/
source
/
cp@keya.c
< prev
next >
Wrap
Text File
|
1998-09-29
|
3KB
|
111 lines
/* KSDサポート関数利用サンプルプログラム */
// API操作型
#include <stdio.h>
#include "ksd.h"
#include "defines.h"
#include "amacro.h"
/* typedef unsigned char unchar; */
/* gcd cp@keyA.c ksd.a : うちの環境でのコンパイル方法 */
#define LMAX 1024 /* >KSD_ST_SIZE */
PrintKSDStatus(unlong mode)
{
int a;
union {
unlong md;
unchar s[sizeof(unlong)+1];
} ss;
unchar devname[8+1];
prints("KSD状態\n");
ss.md=mode;
ss.s[sizeof(long)]=0; // EOS
printf("\tStatus : %s\n",ss.s);
a=KSDReadVer(); printf("\tVersion: %d.%d\n",a>>8,a&0xff);
a=KSDReadSize(); printf("\tKBsize : %d\n",a);
a=KSDReadFree(); printf("\tKBfree : %d\n",a);
KSDDevNameA(devname);
printf("\tDevice : %s\n",devname);
}
main(int argc,unchar *argv[])
{
FILE *fp;
int i,factive,fclear,flook;
unchar *fname;
unchar line[LMAX];
unlong mode;
if (!KSDSetAPI()) {
prints("KSDが組み込まれていません\n");
exit(3);
}
/* オプションチェック初期化 */
clear_param();
if (helpcom(argc,argv,0,"Cp@KeyA","[/A /P /C /L] filename")) exit(255);
// 強制的に活動状態にする
factive=0;
if (check_param2("A",argv,argc,0)) factive=1;
if (check_param2("P",argv,argc,0)) factive=2;
flook=check_param2("L",argv,argc,0);
// キーバッファーをクリアしてから書き込む
fclear=check_param2("C",argv,argc,0);
/* オプションチェック */
i=check_param_error(argv,argc);
if (i) {
printsn("\aオプションエラーです:",argv[i]);
exit(4);
}
i=getfname(argc,argv,1,NULL);
if (i==0) {
prints("ファイルを指定してください\n");
exit(1);
}
fname=argv[i];
/* 組み込みを確認してからKDS関数を呼び出すので、エラーチェックは省く */
if (fclear) KSDClear(); /* キーバッファーをクリアする */
mode=KSDReadMode();
if (flook) PrintKSDStatus(mode);
if ((unchar)(mode)==KSD_ST_Pause) {
// 休止状態にある
if (factive) {
if (factive==1) {
/* 強制活動状態にする */
KSDActive();
} // 休止のまま
} else {
prints("KSDは休止状態です。一時活動状態にしますか?(Y/N):");
i=getch();
if (i==0x1b) {
printc('\n');
exit(255);
}
if (i=='y'||i=='Y') {
KSDOnceActive(); /* 一時活動状態にする */
prints("Y\n");
} else prints("N\n");
}
}
// file open (text mode)
fp=fopen(fname,"rt");
if (fp==NULL) {
printsn("ファイルが見つかりません:",fname);
exit(2);
}
while (fgets(line,LMAX,fp)!=NULL) {
// \n=0x0aはファイルでは改行だが、キーではただの^Jなので
// キーの改行=0x0dに変換する
{int len;
len=strlen(line);
if (line[len-1]=='\n') line[len-1]=0x0d;
KSDWrite(line,len);
}
}
fclose(fp);
exit(0);
}